手绘旅行 VLOG:从产品方案到 PR 合并
本 session 围绕 StoryCam 新增第五个输入模式展开:把用户照片转成手绘旅行角色,再放进真实旅游地,生成带轻剧情的 VLOG。
本 Session 摘要
手绘旅行 VLOG,明确它不是纯打卡合集,而是轻剧情旅行短片。时间线
handdrawn-travel-vlog,输入页增加旅行地字段和照片必填校验,API 类型增加 storyModeId 与 travelDestination,provider prompt 按模式分支,文档同步更新。
images 透传,并在 AI SDK 边界用 prompt object 携带图片;将 clip packet 的 script 选择改成按最新版本取值,并加入时间戳兜底排序。随后补充单测,跑过精准测试、pnpm typecheck、pnpm lint、pre-push 全量测试与 GitHub PR Fast Gate。
关键时刻
1. 新模式不是“旅行照片合集”
问题:如果只把用户角色放进旅游地,会变成打卡图集,和 StoryCam 的故事剧场定位不一致。
重要性:StoryCam 的北极星是私密故事影院,必须保留故事世界、分镜和视频确认链路。
处理:将新模式定义为“轻剧情 VLOG”,仍走 StoryCam 主链路,只改变输入和 prompt 视觉路线。
2. 用户照片只能用于手绘化参考
问题:用户上传自己的照片,容易滑向写实身份复刻或真人脸生成。
重要性:这关系到隐私、安全和产品风格边界。
处理:prompt 明确照片只用于发型、眼镜、穿搭轮廓、姿态和气质,不生成写实真人脸或身份复制。
3. OpenRouter 参考图透传是核心 bug
问题:资产 prompt 已经包含 images[],但 OpenRouter provider 没有把图片传到 AI SDK。
重要性:若部署使用 OpenRouter 图片路径,新模式最关键的“照片生成手绘角色”会失效。
处理:在 OpenRouterImagePrompt、StoryCamGenerateImageInput 和 AI SDK 调用处完整透传图片,并加回归测试。
4. 多版本 script 必须取最新
问题:listBySession 按创建时间升序,旧逻辑会拿到第一个 ready script。
重要性:如果用户重新生成故事世界,新版 storyModeId 可能被旧 script 覆盖,视频 prompt 走错视觉路线。
处理:改为按版本号降序选择最新 script,并用更新时间和创建时间作为 tie-breaker。
5. Review 回复需要显式授权
问题:实现修复后,是否直接在 GitHub 回复和 resolve thread 属于写操作。
重要性:项目协作要求避免未经授权修改 review 状态。
处理:Codex 先修复并推送;用户说“需要回复下,并 resolve”后,才回复并 resolve 两个 thread。
工程证据
feat/handdrawn-travel-vlog#19 · https://github.com/nlp-zn/storycam/pull/190b2a9df feat: add handdrawn travel vlog mode43b206e docs: document handdrawn travel vlog workflow26258d7 fix: address handdrawn travel review feedback
pnpm lint passedpnpm typecheck passed精准测试:2 files / 11 tests passed
pre-push 全量测试:56 files / 300 tests passed
GitHub
PR Fast Gate passed;Dev Integration Gate 与 Main Release Gate 在该 PR 运行中为 skipping
PRRT_kwDOSXDKHs6BfHXK:OpenRouter reference images 透传,已回复并 resolvedPRRT_kwDOSXDKHs6BfHXN:latest script artifact 选择,已回复并 resolved复查结果:review threads 2,unresolved 0
src/features/storycam/domain/storyModes.tssrc/server/ai/vercelAiClient.tssrc/lib/providers/openrouter/imageProvider.tssrc/server/storycam/clipPromptPacketService.tssrc/server/storycam/storyWorldAssetImageProviderFactory.tssrc/server/storycam/clipPromptPacketService.test.tssrc/lib/providers/openrouter/imageProvider.test.ts以及产品规格、前端、设计、API contract、provider contract 相关文档
[REDACTED] 原则处理。对外讲解用总结
这一轮我们把 StoryCam 从“已有四种输入模式”推进到“支持手绘旅行 VLOG”的新创作入口。用户先用教程截图指出一个新的内容生产范式:用自己的照片生成手绘角色,再把角色放进真实旅游地。真正关键的产品判断,是没有把它做成一个旁路工具,而是让它完整进入 StoryCam 的故事世界、角色资产、场景资产、分镜、视频生成和最终作品链路。工程上,这意味着前端输入、API 类型、script artifact、资产 prompt、分镜 prompt、视频 prompt 和文档都要同时更新。PR review 又帮助发现两个会影响真实生成质量的问题:OpenRouter 路径漏传参考图,以及多版本 script 可能取旧模式。修复后通过测试、CI、review 回复与 resolve,最后 PR 合并。这个 session 连接了前面的产品探索和后续的主线能力扩展,是 StoryCam 从“故事短片工具”走向“用户可带入自己的风格化旅行记忆”的一次重要跃迁。